home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1 / Nebula One.iso / Misc / PowerGloveInspector / Source / PowerGloveView.m < prev    next >
Text File  |  1995-06-12  |  1KB  |  56 lines

  1.  
  2. #import "PowerGloveView.h"
  3. #import <math.h>
  4.  
  5. @implementation PowerGloveView
  6.  
  7. /* Over-ridden methods */
  8. - initFrame:(const NXRect *)frameRect
  9. {
  10.     [super initFrame:frameRect];
  11.     [self setDrawSize:256.0 :256.0];
  12.     [self setDrawOrigin:-128.0 :-128.0];
  13.     [self setOpaque:YES];
  14.  
  15.     return self;
  16. }
  17.     
  18. - drawSelf:(const NXRect *)rects :(int)rectCount
  19. {
  20.     /* Get position and rotation of glove */
  21.     float x     = [xField floatValue];
  22.     float y     = [yField floatValue];
  23.     float z     = [zField floatValue];
  24.     float angle = [rollField floatValue];
  25.         
  26.     /* Erase previous view */
  27.     PSsetlinewidth(0.15);
  28.     PSsetgray(NX_WHITE);
  29.     NXRectFill(&bounds);
  30.  
  31.     /* Draw empty half-circle */
  32.     PSmoveto(x,y);
  33.     PSarc(x,y,fabs(z),-angle,180.0-angle);
  34.     PSsetgray(NX_BLACK);
  35.     PSstroke();
  36.     
  37.     /* Draw filled half-circle */
  38.     PSarc(x,y,fabs(z),180.0-angle,-angle);
  39.     if (z<0.0) PSsetgray(NX_LTGRAY);
  40.     PSfill();
  41.  
  42.     /* Draw cross-hairs and frame */    
  43.     PSsetgray(NX_BLACK);
  44.     PSmoveto(-128.0,0.0);
  45.     PSlineto(128.0,0.0);
  46.     PSmoveto(0.0,-128.0);
  47.     PSlineto(0.0,128.0);
  48.     PSstroke();
  49.     NXFrameRect(&bounds);
  50.     
  51.     [window flushWindow];
  52.     return self;
  53. }
  54.  
  55. @end
  56.